home *** CD-ROM | disk | FTP | other *** search
- /*
- * Project: SimpleApp
- *
- * Filename: SimpleAppEvents.c
- *
- * Author: Marco Piovanelli
- *
- * Revision History:
- *
- * 1996.05.24 MP created this file
- *
- */
-
- #include "SimpleApp.h"
-
- // statics
-
- UInt32 sSleepTime = 0 ;
- RgnHandle sMouseRgn = nil ;
-
- void ProcessEvent ( )
- {
- EventRecord event ;
- Boolean gotEvent ;
-
- gotEvent = WaitNextEvent ( everyEvent, & event, sSleepTime, sMouseRgn ) ;
-
- switch ( event . what )
- {
- case nullEvent:
- DoNullEvent ( event ) ;
- break ;
-
- case mouseDown:
- DoMouseDownEvent ( event ) ;
- break ;
-
- case keyDown:
- case autoKey:
- DoKeyDownEvent ( event ) ;
- break ;
-
- case updateEvt:
- case activateEvt:
- DoWindowEvent ( event ) ;
- break ;
-
- case diskEvt:
- DoDiskEvent ( event ) ;
- break ;
-
- case osEvt:
- DoOSEvent ( event ) ;
- break ;
-
- case kHighLevelEvent:
- DoHighLevelEvent ( event ) ;
- break ;
-
- default:
- break ;
- }
-
- if ( gotEvent )
- {
- sSleepTime = 0 ; // force early idle after non-null event
- }
- }
-
- void DoNullEvent ( EventRecord & event )
- {
- #pragma unused ( event )
-
- sSleepTime = kDefaultSleep ;
- }
-
- void DoMouseDownEvent ( EventRecord & event )
- {
- WindowRef macWindow ;
- SInt16 partCode ;
-
- partCode = FindWindow ( event . where, & macWindow ) ;
-
- switch ( partCode )
- {
- case inMenuBar:
- PrepareMenus ( ) ;
- DoMenuChoice ( MenuSelect ( event . where ) ) ;
- break ;
-
- case inSysWindow:
- SystemClick ( & event, macWindow ) ;
- break ;
-
- case inContent:
- if ( macWindow != FrontWindow ( ) )
- {
- SelectWindow ( macWindow ) ;
- }
- else
- {
- Point hitPt = event . where ;
- SetPortWindowPort ( macWindow ) ;
- GlobalToLocal ( & hitPt ) ;
- DoContent ( macWindow, hitPt, event ) ;
- }
- break ;
-
- case inDrag:
- DoDrag ( macWindow, event . where, event ) ;
- break ;
-
- case inGrow:
- DoGrow ( macWindow, event . where, event ) ;
- break ;
-
- case inGoAway:
- if ( TrackGoAway ( macWindow, event . where ) )
- {
- DoGoAway ( macWindow, event ) ;
- }
- break ;
-
- case inZoomIn:
- case inZoomOut:
- if ( TrackBox ( macWindow, event . where, partCode ) )
- {
- DoZoom ( macWindow, partCode, event ) ;
- }
- break ;
-
- default:
- break ;
- }
- }
-
- void DoKeyDownEvent ( EventRecord & event )
- {
- char key = event . message & charCodeMask ;
-
- if ( ( event . modifiers & cmdKey ) && ( key > 0x20 ) )
- {
- PrepareMenus ( ) ;
- DoMenuChoice ( MenuKey ( key ) ) ;
- }
- }
-
- void DoWindowEvent ( EventRecord & event )
- {
- WindowRef macWindow = ( WindowRef ) event . message ;
-
- switch ( event . what )
- {
- case updateEvt :
- BeginUpdate ( macWindow ) ;
- DoUpdate ( macWindow, GetWindowPort ( macWindow ) -> visRgn ) ;
- EndUpdate ( macWindow ) ;
- break ;
-
- case activateEvt :
- DoActivate ( macWindow, ( event . modifiers ) & activeFlag != 0 ) ;
- break ;
- }
- }
-
- void DoDiskEvent ( EventRecord & event )
- {
- if ( ( event . message >> 16 ) != noErr )
- {
- Point dialogCorner = { 80, 112 } ;
- DIBadMount ( dialogCorner, event . message ) ;
- }
- }
-
- void DoOSEvent ( EventRecord & event )
- {
- WindowRef window ;
-
- switch ( ( event . message & osEvtMessageMask ) >> 24 )
- {
- case suspendResumeMessage :
- if ( ( window = FrontWindow ( ) ) != nil )
- {
- DoActivate ( window, ( event . message & resumeFlag ) != 0 ) ;
- }
- break;
-
- case mouseMovedMessage :
- default :
- break;
- }
- }
-
- void DoHighLevelEvent ( EventRecord & event )
- {
- AEProcessAppleEvent ( & event ) ;
- }
-
- OSErr InitializeEvents ( )
- {
- OSErr err = noErr ;
-
- // install Apple event handlers for the Required Suite
- if ( ( err = AEInstallEventHandler ( kCoreEventClass, kAEOpenApplication, NewAEEventHandlerProc ( HandleOpenApp ), 0, false ) ) != noErr )
- return err ;
- if ( ( err = AEInstallEventHandler ( kCoreEventClass, kAEOpen, NewAEEventHandlerProc ( HandleOpenDoc ), 0, false ) ) != noErr )
- return err ;
- if ( ( err = AEInstallEventHandler ( kCoreEventClass, kAEPrint, NewAEEventHandlerProc ( HandleOpenDoc ), 0, false ) ) != noErr )
- return err ;
- if ( ( err = AEInstallEventHandler ( kCoreEventClass, kAEQuitApplication, NewAEEventHandlerProc ( HandleQuit ), 0, false ) ) != noErr )
- return err ;
-
- return noErr ;
- }
-